package com.business.dashboard.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 商业计划书实体类
 * 
 * @author Claude
 * @since 2025-07-06
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("business_plans")
public class BusinessPlan implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 计划书标题
     */
    private String title;

    /**
     * 公司名称
     */
    private String companyName;

    /**
     * 所属行业
     */
    private String industry;

    /**
     * 商业模式
     */
    private String businessModel;

    /**
     * 目标市场
     */
    private String targetMarket;

    /**
     * 问题陈述
     */
    private String problemStatement;

    /**
     * 解决方案
     */
    private String solution;

    /**
     * 独特价值主张
     */
    private String uniqueValue;

    /**
     * 市场规模
     */
    private String marketSize;

    /**
     * 竞争分析
     */
    private String competitors;

    /**
     * 收入模式
     */
    private String revenueModel;

    /**
     * 融资需求（万元）
     */
    private BigDecimal fundingNeeded;

    /**
     * 团队规模
     */
    private Integer teamSize;

    /**
     * 发展时间线
     */
    private String timeline;

    /**
     * 完整计划书数据（JSON格式）
     */
    private String planData;

    /**
     * 状态：draft-草稿，completed-已完成，published-已发布
     */
    private String status;

    /**
     * 模板ID
     */
    private Long templateId;

    /**
     * 版本号
     */
    private Integer version;

    /**
     * 生成的文件路径
     */
    private String generatedFilePath;

    /**
     * 分享码
     */
    private String shareCode;

    /**
     * 查看次数
     */
    private Integer viewCount;

    /**
     * 下载次数
     */
    private Integer downloadCount;

    /**
     * 创建时间
     */
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;

    /**
     * 删除标记：0-未删除，1-已删除
     */
    private Integer deleted;
}